Crate bevy_tasks
source ·Expand description
bevy_tasks
A refreshingly simple task executor for bevy. :)
This is a simple threadpool with minimal dependencies. The main usecase is a scoped fork-join, i.e. spawning tasks from
a single thread and having that thread await the completion of those tasks. This is intended specifically for
bevy
as a lighter alternative to rayon
for this specific usecase. There are also utilities for
generating the tasks from a slice of data. This library is intended for games and makes no attempt to ensure fairness
or ordering of spawned tasks.
It is based on async-executor
, a lightweight executor that allows the end user to manage their own threads.
async-executor
is based on async-task, a core piece of async-std.
Dependencies
A very small dependency list is a key feature of this module
├── async-executor
│ ├── async-task
│ ├── concurrent-queue
│ │ └── cache-padded
│ └── fastrand
├── num_cpus
│ └── libc
├── parking
└── futures-lite
Modules
Structs
- A newtype for a task pool for CPU-intensive work that may span across multiple frames
- A newtype for a task pool for CPU-intensive work that must be completed to deliver the next frame
- A newtype for a task pool for IO-intensive work (i.e. tasks that spend very little time in a “woken” state)
- A
TaskPool
scope for running one or more non-'static
futures. - Wraps
async_executor::Task
, a spawned future. - A thread pool for executing tasks. Tasks are futures that are being automatically driven by the pool on threads owned by the pool.
- Used to create a
TaskPool
- An executor that can only be ticked on the thread it was instantiated on. But can spawn
Send
tasks from other threads. - Used to tick the
ThreadExecutor
. The executor does not make progress unless it is manually ticked on the thread it was created on.
Traits
ParallelIterator
closely emulates thestd::iter::Iterator
interface. However, it usesbevy_task
to compute batches in parallel.- Provides functions for mapping read-only slices across a provided
TaskPool
. - Provides functions for mapping mutable slices across a provided
TaskPool
.
Functions
- Gets the logical CPU core count available to the current process.
- A function used by
bevy_core
to tick the global tasks pools on the main thread. This will run a maximum of 100 local tasks per executor per call to this function.